package com.bt.lms.dao.servise;

import com.bt.lms.bo.FinishedTeachingArrange;
import com.bt.lms.bo.NoStartTeachingArrange;
import com.bt.lms.bo.ProcessTeachingArrange;
import com.bt.lms.entity.TeachingArrangeInfo;
import com.bt.lms.entity.page.Page;

import java.sql.SQLException;

/**
 * 教学安排dao
 */
public interface TeachingArrangeDao {

    /**
     * 插入数据
     *
     * @param sql                 sql语句
     * @param teachingArrangeInfo 教学安排信息
     * @return 影响的行数
     */
    public int insert(String sql, TeachingArrangeInfo teachingArrangeInfo) throws ClassNotFoundException, SQLException;

    /**
     * 编辑教学安排
     *
     * @param sql                 sql语句
     * @param teachingArrangeInfo 教学安排信息
     * @return 是否成功
     */
    public boolean edit(String sql, TeachingArrangeInfo teachingArrangeInfo, Long teachingArrangeID) throws ClassNotFoundException, SQLException;

    /**
     * 删除教学安排
     *
     * @param sql               sql语句
     * @param teachingArrangeID 要删除的教学安排id
     * @return 是否成功
     */
    public boolean delete(String sql, Long teachingArrangeID) throws ClassNotFoundException, SQLException;

    /**
     * 确认开课功能
     *
     * @param sql               sql 语句
     * @param teachingArrangeID 要确认开课的id
     * @return 是否成功
     */
    public boolean affirmCourseStart(String sql, Long teachingArrangeID) throws ClassNotFoundException, SQLException;


    /**
     * 查看教学安排详情功能
     *
     * @param sql               sql语句
     * @param teachingArrangeID 要查看的教学安排id
     * @return 教学安排信息
     */
    public TeachingArrangeInfo queryDetail(String sql, Long teachingArrangeID) throws ClassNotFoundException, SQLException;


    /**
     * 新增并确认开课功能
     * @param sql sql 语句
     * @param teachingArrangeInfo 教学安排信息
     * @return 影响的行数
     */
    public int insert1(String sql,TeachingArrangeInfo teachingArrangeInfo) throws SQLException;


    /**
     * 分页条件查询未实施的教学安排信息
     * @param sql sql语句
     * @param page 分页查询
     * @return 未实施的教学安排信息
     */
    public Page<TeachingArrangeInfo> pageQueryNoStart(String sql, Page<NoStartTeachingArrange> page) throws SQLException;


    /**
     * 分页条件查询实施中的教学安排信息
     * @param sql sql语句
     * @param page 分页查询
     * @return 实施中的教学安排信息
     */
    public Page<TeachingArrangeInfo> pageQueryProcess(String sql, Page<ProcessTeachingArrange> page) throws SQLException;


    /**
     * 分页条件查询已完成的教学安排信息
     * @param sql sql语句
     * @param page 分页查询
     * @return 已完成的教学安排信息
     */
    public Page<TeachingArrangeInfo> pageQueryFinish(String sql, Page<FinishedTeachingArrange> page) throws SQLException;






}
